home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 2009 February
/
PCWFEB09.iso
/
Software
/
Resources
/
Chat & Communication
/
Digsby build 37
/
digsby_setup.exe
/
lib
/
PIL
/
FontFile.pyo
(
.txt
)
< prev
next >
Wrap
Python Compiled Bytecode
|
2008-10-13
|
3KB
|
121 lines
# Source Generated with Decompyle++
# File: in.pyo (Python 2.5)
import os
import Image
import marshal
try:
import zlib
except ImportError:
zlib = None
WIDTH = 800
def puti16(fp, values):
for v in values:
if v < 0:
v = v + 65536
fp.write(chr(v >> 8 & 255) + chr(v & 255))
class FontFile:
bitmap = None
def __init__(self):
self.info = { }
self.glyph = [
None] * 256
def __getitem__(self, ix):
return self.glyph[ix]
def compile(self):
if self.bitmap:
return None
h = w = maxwidth = 0
lines = 1
for glyph in self:
if glyph:
(d, dst, src, im) = glyph
h = max(h, src[3] - src[1])
w = w + (src[2] - src[0])
if w > WIDTH:
lines = lines + 1
w = src[2] - src[0]
maxwidth = max(maxwidth, w)
continue
xsize = maxwidth
ysize = lines * h
if xsize == 0 and ysize == 0:
return ''
self.ysize = h
self.bitmap = Image.new('1', (xsize, ysize))
self.metrics = [
None] * 256
x = y = 0
for i in range(256):
glyph = self[i]
if glyph:
(d, dst, src, im) = glyph
xx = src[2] - src[0]
yy = src[3] - src[1]
x0 = x
y0 = y
x = x + xx
if x > WIDTH:
x = 0
y = y + h
x0 = x
y0 = y
x = xx
s = (src[0] + x0, src[1] + y0, src[2] + x0, src[3] + y0)
self.bitmap.paste(im.crop(src), s)
self.metrics[i] = (d, dst, s)
continue
def save1(self, filename):
self.compile()
self.bitmap.save(os.path.splitext(filename)[0] + '.pbm', 'PNG')
fp = open(os.path.splitext(filename)[0] + '.pil', 'wb')
fp.write('PILfont\n')
fp.write(';;;;;;%d;\n' % self.ysize)
fp.write('DATA\n')
for id in range(256):
m = self.metrics[id]
if not m:
puti16(fp, [
0] * 10)
continue
puti16(fp, m[0] + m[1] + m[2])
fp.close()
def save2(self, filename):
self.compile()
data = marshal.dumps((self.metrics, self.info))
if zlib:
data = 'z' + zlib.compress(data, 9)
else:
data = 'u' + data
fp = open(os.path.splitext(filename)[0] + '.pil', 'wb')
fp.write('PILfont2\n' + self.name + '\n' + 'DATA\n')
fp.write(data)
self.bitmap.save(fp, 'PNG')
fp.close()
save = save1